feat: add per-connection local-only flag to exclude from iCloud sync#845
Merged
feat: add per-connection local-only flag to exclude from iCloud sync#845
Conversation
When a record is deleted locally, its tombstone is pushed to iCloud. If the pull in the same sync cycle returns stale data for that record (CloudKit eventual consistency), the record was re-added because tombstones were not checked. Now all applyRemote methods (connection, group, tag, SSH profile) skip records that have pending local tombstones.
…atch deletions - ConnectionStorage: markDeleted before saveConnections (matches Group/Tag pattern) - WelcomeViewModel: remove recentlyDeletedIds hack, debug logging; add rebuildTree after delete - SyncCoordinator: remove pushedRecordNames echo hack, batch remote deletions (one load/save per type), auto-prune tombstones older than 30 days, only post connectionUpdated when actual changes applied, applyRemoteConnection returns Bool
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
localOnly: Boolproperty toDatabaseConnectionfor per-connection iCloud sync exclusionSyncChangeTracker.markDirty/markDeletedfor local-only connections (add, update, delete, duplicate)SyncCoordinator.performPushso they never reach CloudKitlocalOnlyflag when merging remote connection updates inapplyRemoteConnectionicloud.slashindicator in connection sidebar for local-only connectionslocalOnlyin connection export/import formatlocalOnly = falseCloses #749
Test plan
icloud.slashicon in sidebarconnections.jsonwithoutlocalOnlyloads correctly (defaults false)